const fs = require('fs');
const path = require('path');

function response(res, content, type = 'json') {
    res.type(type);
    res.write(content);
    res.end();
}

function mock(res, file) {
    fs.readFile(file, 'utf-8', (error, content) => {
        if (error) {
            response(res, error.message, 'html');
        }
        response(res, content);
    });
}
const mockMiddleware = (config) => (req, res, next) => {
    const { projectDir, mockDir } = config;

    const filePath = path.resolve(projectDir, `./${mockDir + req.path}.json`);

    // 使用node下的stat对当前文件进行检查，是否可以被正常解析
    // 如果不能 则返回回调函数 其中
    return fs.stat(filePath, (error) => {
        if (error) {
            next();
        } else {
            // 如果不能则执行我们自己定义的mock函数
            mock(res, filePath);
        }
    });
};

module.exports = mockMiddleware;
